// DFS
#include <bits/stdc++.h>
using namespace std;

int n, m, ans;
char c[10][10];

// dfs枚举所有的可能
void dfs(int x, int y, int cnt) {
  if (cnt >= ans)
    return;

  if (y == m + 1) {
    x++;
    y = 1;
  }
  if (x == n + 1) {
    ans = cnt;
    return;
  }

  // 如果是白色，直接跳过 
  if (c[x][y] == '.') {
    dfs(x, y + 1, cnt);

  } else {
    // 如果是黑色， 两种情况讨论：
    if (x == 1 || y == 1 || c[x - 1][y] == '.' || c[x][y - 1] == '.' ||
        c[x - 1][y - 1] == '.')
      dfs(x, y + 1, cnt);

    c[x][y] = '.';        // 将c[x][y]刷成白色
    dfs(x, y + 1, cnt + 1); // 将c[x][y]刷成白色后，继续搜索
    c[x][y] = '#';        // 回溯，恢复现场，学生容易遗忘
  }
}
int main() {
  int t;
  cin >> t;
  while (t--) {
    cin >> n >> m;
    ans = n * m;
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= m; j++)
        cin >> c[i][j];
    dfs(1, 1, 0);
    cout << ans << endl;
  }
  return 0;
}